home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / doc / pm-utils / HOWTO.modules < prev    next >
Text File  |  2008-10-15  |  3KB  |  69 lines

  1. How to write a sleep module:
  2.  
  3. OVERVIEW:
  4. Sleep modules are POSIX-compatible shell scripts designed to be sourced by
  5. the pm-utils machinery in order to check that the machine supports a sleep
  6. method and to actually enter that method.  
  7. Currently, three sleep methods are supported:
  8.  
  9. SUSPEND:
  10.     Suspend (also known as suspend-to-ram) is the sleep mode equivalent
  11. to ACPI S3 -- state is saved in system memory, and all other hardware is either
  12. powered off or in power-saving mode.  If your sleep module supports suspend,
  13. it MUST define 2 functions:
  14.  
  15. * check_suspend, which checks to see that the system provides a suspend-to-ram
  16.   mechanism, returns 0 if it does, and 1 if it does not.
  17.  
  18. * do_suspend, which performs just the task of putting the system in suspend.
  19.  
  20. HIBERNATE:
  21.     Hibernate (also know as suspend-to-disk) is the sleep mode equivalent
  22. to ACPI S4 -- the system state is saved to permanent media (like a hard drive),
  23. and the system is iether in a very low-power use mode or completly powered off.
  24. If your sleep module supports hibernate, it MUST define 2 functions:
  25.  
  26. * check_hibernate, which checks to see if the system provides a suspend-to-disk
  27.   mechanism, and returns 0 if it does, and 1 if it does not.
  28.  
  29. * do_hibernate, which performs just the task of putting the system in hibernate.
  30.  
  31. Hibernate can optionally provide a third function:
  32. * hibernate_might_work, which should return 0 if the minimum prerequisites
  33.   for a sucessful hibernate/thaw cycle are met (ensuring that there is an
  34.   active swap device, etc), and 1 otherwise.  If your system provides this
  35.   method, your do_hibernate function SHOULD check it and:
  36.   * emit an error message, and
  37.   * return without hibernating the system.
  38.  
  39. SUSPEND_HYBRID:
  40.     suspend_hybrid is a blend of suspend and hibernate.  It performs all
  41. the tasks needed to put the system into hibernate mode (including writing the
  42. memory image to disk), and then puts the system into suspend mode.  If
  43. implemented porperly, this should provide the convienence of the resume speed
  44. of suspend with the assurance that your state is saved to the hard drive if
  45. you run out of power.  If your sleep module supports suspend_hybrid, it MUST
  46. define 2 functions:
  47.  
  48. * check_suspend_hybrid, which checks to see that the system provides hybrid
  49.   suspend functionality, and returns 0 if it dies and 1 if it does not.
  50.  
  51. * do_suspend_hybrid, which just performs the task of putting the system into
  52.   suspend_hybrid sleep.
  53.  
  54. do_suspend_hybrid SHOULD utilize hibernate_might_work if it is present.
  55.  
  56. OTHER STUFF:
  57.  
  58. If you define a function named "before_hook", that function will be executed
  59. just before the sleep/resume hooks are executed.  If you need to disable a hook,
  60. this is the place to do it.
  61.  
  62. If you define a function named "sleep_method_help", that function will be 
  63. executed whenever any of the pm-utils scripts is called with the "--help"
  64. option. If the behaviour of your sleep method can be changes by command-line
  65. parameters passed to pm-action or by a configuration file setting, you
  66. SHOULD define a sleep_method_help function and that function SHOULD explain
  67. how the command-line paramaters and configuration file settings can change its
  68. behaviour. 
  69.